package no.nordicsemi.android.dfuupdate.server;

import java.util.HashMap;
import java.util.Map;

import no.nordicsemi.android.dfuupdate.bean.HomeData;
import no.nordicsemi.android.dfuupdate.bean.LoginData;
import no.nordicsemi.android.dfuupdate.bean.PutTag;
import no.nordicsemi.android.dfuupdate.bean.ServerInfo;
import no.nordicsemi.android.dfuupdate.bean.UpdateTag;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;

public interface TaskService {
    //http://127.0.0.1:8090/home?index=0
    //注解@GET:指定求方式 与请求路径
    //@Query是用来设置GET 请求参数变量名
    //返回值泛型是用来指定new Gson().fromJson(json,clz)
    //指定Call 该方法就可以运行子线程,代表异步请求
    @Headers("Content-Type:application/json; charset=utf-8")
    @GET("seting/index")
    Call<ServerInfo> getServerInfo();

    @GET("home")
    Call<HomeData> getHomeData(
            @Query("index")
                    String index);

    //@QueryMap指定map集合为get请求参数
    @GET("home")
    Call<HomeData> getHomeData(
            @QueryMap
                    HashMap<String,String> map);


    //http://192.168.79.28:8080/webapi/post?username=itheima&password=123
    //@POST标注当前方法 使用POST请求
    //@Field用来标注post请求参数名
    //@FormUrlEncoded与@Post配合使用，要求对post的参数进行网络编码
    @FormUrlEncoded
    @POST("post")
    Call<LoginData> login(@Field("username")String username, @Field("password") String pwd);
    //    @FieldMap用来标注map为Post请求的参数
    @FormUrlEncoded
    @POST("post")
    Call<LoginData> login(@FieldMap HashMap<String,String> params);


    @GET("uwb/getUpdate")
    Call<UpdateTag> getTag(@QueryMap HashMap<String,Object> params);

    @PUT("uwb/upgraded")
    Call<PutTag> putTag(@Body Map<String,Object> params);
}
